package 队列.easy;

import java.util.PriorityQueue;

/**
 * @author Lw中
 * @date 2021/7/16 23:52
 */
public class QiLingSan {

    // 703. 数据流中的第 K 大元素

    // new一个Java集合类：堆实现的优先队列
    PriorityQueue<Integer> queue;
    int k;
    public QiLingSan(int k, int[] nums) {
        this.k = k;
        queue = new PriorityQueue<Integer>();
        // 将数据流nums的值往队列中加，每加一次就返回第K大的值
        for (int num : nums) {
            add(num);
        }
    }

    public int add(int val) {
        // 将val加入队列
        queue.offer(val);
        // 因为要将队列的元素个数维持在k内（确保堆顶为第k大元素），所以每加入一个元素需要进行判断队列中的元素
        if (queue.size() > k) {
            queue.poll();
        }
        return queue.peek();
    }

}
